状态机
状态机 定义了控制交互动画的逻辑。它们通过触发器、布尔值和数值等输入来切换动画状态。
播放状态机
Compose API
默认情况下,Rive 可组合项会选择并创建 Rive 编辑器中指定的默认状态机。要指定不同的状态机,需要先从 Artboard 创建 StateMachine 对象。
在 Compose 中
可以使用 rememberStateMachine 函数创建状态机对象,该函数接受画板和状态机名称 。
val artboard = rememberArtboard(myRiveFile, "My Artboard")
val stateMachine = rememberStateMachine(artboard, "My State Machine")
在 Compose 外部
也可以在 Compose 上下文之外创建状态机。注意,使用此方式你需要自行管理状态机的生命周期,在不再需要时调用 StateMachine::close(),或利用其 AutoClosable 接口配合 use 块。
val artboard = Artboard.fromFile(myRiveFile, "My Artboard")
val stateMachine = StateMachine.fromArtboard(artboard, "My State Machine")
// ...
stateMachine.close()
artboard.close()
使用状态机
获得状态机后,可以通过 stateMachine 参数将其传递给 Rive 可组合项。
默认情况下,Rive 可组合项会播放选定的状态机。要切换播放/暂停状态,设置 playing 参数来触发重组。这也用于复制其他运行时的自动播放行为 —— 如果需要进行初始设置,将 playing 设置为 false,准备就绪后设置为 true